1. Field of the Invention
This invention relates to peer-to-peer networking, and more particularly to content sharing and distribution in peer-to-peer networks.
2. Description of the Related Art
The Internet has three valuable fundamental assets—information, bandwidth, and computing resources—all of which are vastly underutilized, partly due to the traditional client-server computing model. No single search engine or portal can locate and catalog the ever-increasing amount of information on the Web in a timely way. Moreover, a huge amount of information is transient and not subject to capture by techniques such as Web crawling. For example, research has estimated that the world produces two exabytes or about 2×1018 bytes of information every year, but only publishes about 300 terabytes or about 3×1012 bytes. In other words, for every megabyte of information produced, only one byte is published. Moreover, Google claims that it searches about only 1.3×10^8 web pages. Thus, finding useful information in real time is increasingly difficult.
Although miles of new fiber have been installed, the new bandwidth gets little use if everyone goes to one site for content and to another site for auctions. Instead, hot spots just get hotter while cold pipes remain cold. This is partly why most people still feel the congestion over the Internet while a single fiber's bandwidth has increased by a factor of 10^6 since 1975, doubling every 16 months.
New processors and storage devices continue to break records in speed and capacity, supporting more powerful end devices throughout the network. However, computation continues to accumulate around data centers, which have to increase their workloads at a crippling pace, thus putting immense pressure on space and power consumption.
Finally, computer users in general are accustomed to computer systems that are deterministic and synchronous in nature, and think of such a structure as the norm. For example, when a browser issues a URL (Uniform Resource Locator) request for a Web page, the output is typically expected to appear shortly afterwards. It is also typically expected that everyone around the world will be able to retrieve the same page from the same Web server using the same URL.
The term peer-to-peer networking or computing (often referred to as P2P) may be applied to a wide range of technologies that greatly increase the utilization of information, bandwidth, and computing resources in the Internet. Frequently, these P2P technologies adopt a network-based computing style that neither excludes nor inherently depends on centralized control points. Apart from improving the performance of information discovery, content delivery, and information processing, such a style also can enhance the overall reliability and fault-tolerance of computing systems.
FIGS. 1A and 1B are examples illustrating the peer-to-peer model. FIG. 1A shows two peer devices 104A and 104B that are currently connected. Either of the two peer devices 104 may serve as a client of or a server to the other device. FIG. 1B shows several peer devices 104 connected over the network 106 in a peer group. In the peer group, any of the peer devices 104 may serve as a client of or a server to any of the other devices.
In the client-server model, content may be published on a server for user (client) access. Content publishing in the client-server model may encounter problems related to one or more of, but not limited to:
how powerful the server is
how many servers are required
how are the servers configured and connected
server load
load balancing between the servers
where the servers are located
bandwidth and latency
Content publishing in the client-server model may also be affected by changes in demand patterns. As examples, at certain times of the day, a server may be heavily loaded due to an increased number of clients, or particular items of content (e.g. a streaming movie) may become popular, resulting in increased demand. Changes in demand may result in scaling problems. A server may not be able to efficiently handle peak load periods, potentially resulting in poor performance from the clients' perspective. However, fluctuating demand may not justify investing in servers that are more powerful and/or additional servers.
Client/server content sharing/distribution networks (CDNs) may help address some of the problems encountered with client/server content distribution. CDNs are third party networks that a content distributor can lease. CDNs replicate contents within the network, pushing contents to the edges of the Internet. Content distribution may be controlled by a central authority to meet the demand over time and region. From the user's perspective, the contents come from the content distributor. In a Client/Server CDN, it is the server that is the primary content publisher/distributor.
For example, if a user is interested in a popular video stream, the user may use a search engine (e.g. google.com or yahoo.com) to search for the video stream. The search engine may locate the video stream on a server of the content distributor. In the process of accessing the video stream, a CDN may redirect the user to a server closest to the origin of request (an edge server) and the user then may get the feed/content from this server, while to the user it appears that the content came from the content distributor.
This model works as long as the contents are strategically distributed physically close to potential users/client systems. When there is a content miss, i.e. content is not found on an edge server close to the user, the model fails. In this case, either the user is redirected to the actual source of the content (a central server), or the edge server contacts the actual source of the content, gets the content, potentially caches the content, and serves the user. In both of these scenarios, access from the actual source of the content (the central server) cannot be avoided, potentially resulting in overloading of the central server. The user experience may suffer due to delays in accessing the content. This may be particularly true if the desired content is an audio or video stream. The user experience may be particularly poor if the user happens to be far on the network from the central server and/or if there is a relatively slow network connection between the user (client system) and the central server.